Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • Download


LXST/Sources.py dff0fd583120cf045384520147f4ec8708461a84 (dff0fd58) Text, 14.31 KB

Tff7b72import T7ee787os
Tff7b72import T7ee787RNS
Tff7b72import T7ee787math
Tff7b72import T7ee787time
Tff7b72import T7ee787threading
Tff7b72import T7ee787numpy Tff7b72as T7ee787np
Tff7b72from T7ee787collections Tff7b72import Te6edf3deque
Tff7b72from T7ee787.T7ee787Sinks Tff7b72import Te6edf3LocalSink
Tff7b72from T7ee787.T7ee787Codecs Tff7b72import Te6edf3CodecTb4b4b4, Te6edf3CodecError
Tff7b72from T7ee787.T7ee787CodecsT7ee787.T7ee787libsT7ee787.T7ee787pyogg Tff7b72import Te6edf3OpusFile

Tff7b72class T56d364LinuxBackendTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3SAMPLERATE Tff7b72= T79c0ff48000

Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3preferred_deviceTff7b72=Tff7b72NoneTb4b4b4, Te6edf3samplerateTff7b72=Te6edf3SAMPLERATETb4b4b4)Tb4b4b4:
Tff7b72import T7ee787soundcard
Tff7b72selfTff7b72.Td2a8ffsamplerate Tff7b72= Te6edf3samplerate
Tff7b72selfTff7b72.Td2a8ffsoundcard Tff7b72= Te6edf3soundcard
Tff7b72if Te6edf3preferred_deviceTb4b4b4:
Tff7b72tryTb4b4b4: Tff7b72selfTff7b72.Td2a8ffdevice Tff7b72= Tff7b72selfTff7b72.Td2a8ffsoundcardTff7b72.Td2a8ffget_microphoneTb4b4b4(Te6edf3preferred_deviceTb4b4b4)
Tff7b72exceptTb4b4b4: Tff7b72selfTff7b72.Td2a8ffdevice Tff7b72= Tff7b72selfTff7b72.Td2a8ffsoundcardTff7b72.Td2a8ffdefault_microphoneTb4b4b4(Tb4b4b4)
Tff7b72elseTb4b4b4: Tff7b72selfTff7b72.Td2a8ffdevice Tff7b72= Tff7b72selfTff7b72.Td2a8ffsoundcardTff7b72.Td2a8ffdefault_microphoneTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffchannels Tff7b72= Tff7b72selfTff7b72.Td2a8ffdeviceTff7b72.Td2a8ffchannels
Tff7b72selfTff7b72.Td2a8ffbitdepth Tff7b72= T79c0ff32
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffUsing input device Tffd700{Tff7b72selfTff7b72.Td2a8ffdeviceTffd700}Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)

Tff7b72def Td2a8ffflushTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffrecorderTff7b72.Td2a8ffflushTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffget_recorderTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3samples_per_frameTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8ffdeviceTff7b72.Td2a8ffrecorderTb4b4b4(Te6edf3samplerateTff7b72=Tff7b72selfTff7b72.Td2a8ffSAMPLERATETb4b4b4, Te6edf3blocksizeTff7b72=Te6edf3samples_per_frameTb4b4b4)

Tff7b72def Td2a8ffrelease_recorderTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4: Tff7b72pass

Tff7b72class T56d364AndroidBackendTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3SAMPLERATE Tff7b72= T79c0ff48000

Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3preferred_deviceTff7b72=Tff7b72NoneTb4b4b4, Te6edf3samplerateTff7b72=Te6edf3SAMPLERATETb4b4b4)Tb4b4b4:
Tff7b72from T7ee787.T7ee787PlatformsT7ee787.T7ee787android Tff7b72import Te6edf3soundcard
Tff7b72selfTff7b72.Td2a8ffsamplerate Tff7b72= Te6edf3samplerate
Tff7b72selfTff7b72.Td2a8ffsoundcard Tff7b72= Te6edf3soundcard
Tff7b72if Te6edf3preferred_deviceTb4b4b4:
Tff7b72tryTb4b4b4: Tff7b72selfTff7b72.Td2a8ffdevice Tff7b72= Tff7b72selfTff7b72.Td2a8ffsoundcardTff7b72.Td2a8ffget_microphoneTb4b4b4(Te6edf3preferred_deviceTb4b4b4)
Tff7b72exceptTb4b4b4: Tff7b72selfTff7b72.Td2a8ffdevice Tff7b72= Tff7b72selfTff7b72.Td2a8ffsoundcardTff7b72.Td2a8ffdefault_microphoneTb4b4b4(Tb4b4b4)
Tff7b72elseTb4b4b4: Tff7b72selfTff7b72.Td2a8ffdevice Tff7b72= Tff7b72selfTff7b72.Td2a8ffsoundcardTff7b72.Td2a8ffdefault_microphoneTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffchannels Tff7b72= Tff7b72selfTff7b72.Td2a8ffdeviceTff7b72.Td2a8ffchannels
Tff7b72selfTff7b72.Td2a8ffbitdepth Tff7b72= T79c0ff32
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffUsing input device Tffd700{Tff7b72selfTff7b72.Td2a8ffdeviceTffd700}Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)

Tff7b72def Td2a8ffflushTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffrecorderTff7b72.Td2a8ffflushTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffget_recorderTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3samples_per_frameTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8ffdeviceTff7b72.Td2a8ffrecorderTb4b4b4(Te6edf3samplerateTff7b72=Tff7b72selfTff7b72.Td2a8ffSAMPLERATETb4b4b4, Te6edf3blocksizeTff7b72=Te6edf3samples_per_frameTb4b4b4)

Tff7b72def Td2a8ffrelease_recorderTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4: Tff7b72pass

Tff7b72class T56d364DarwinBackendTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3SAMPLERATE Tff7b72= T79c0ff48000

Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3preferred_deviceTff7b72=Tff7b72NoneTb4b4b4, Te6edf3samplerateTff7b72=Te6edf3SAMPLERATETb4b4b4)Tb4b4b4:
Tff7b72import T7ee787soundcard
Tff7b72selfTff7b72.Td2a8ffsamplerate Tff7b72= Te6edf3samplerate
Tff7b72selfTff7b72.Td2a8ffsoundcard Tff7b72= Te6edf3soundcard
Tff7b72if Te6edf3preferred_deviceTb4b4b4:
Tff7b72tryTb4b4b4: Tff7b72selfTff7b72.Td2a8ffdevice Tff7b72= Tff7b72selfTff7b72.Td2a8ffsoundcardTff7b72.Td2a8ffget_microphoneTb4b4b4(Te6edf3preferred_deviceTb4b4b4)
Tff7b72exceptTb4b4b4: Tff7b72selfTff7b72.Td2a8ffdevice Tff7b72= Tff7b72selfTff7b72.Td2a8ffsoundcardTff7b72.Td2a8ffdefault_microphoneTb4b4b4(Tb4b4b4)
Tff7b72elseTb4b4b4: Tff7b72selfTff7b72.Td2a8ffdevice Tff7b72= Tff7b72selfTff7b72.Td2a8ffsoundcardTff7b72.Td2a8ffdefault_microphoneTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffchannels Tff7b72= Tff7b72selfTff7b72.Td2a8ffdeviceTff7b72.Td2a8ffchannels
Tff7b72selfTff7b72.Td2a8ffbitdepth Tff7b72= T79c0ff32
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffUsing input device Tffd700{Tff7b72selfTff7b72.Td2a8ffdeviceTffd700}Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)

Tff7b72def Td2a8ffflushTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffrecorderTff7b72.Td2a8ffflushTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffget_recorderTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3samples_per_frameTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8ffdeviceTff7b72.Td2a8ffrecorderTb4b4b4(Te6edf3samplerateTff7b72=Tff7b72selfTff7b72.Td2a8ffSAMPLERATETb4b4b4, Te6edf3blocksizeTff7b72=Te6edf3samples_per_frameTb4b4b4)

Tff7b72def Td2a8ffrelease_recorderTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4: Tff7b72pass

Tff7b72class T56d364WindowsBackendTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3SAMPLERATE Tff7b72= T79c0ff48000

Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3preferred_deviceTff7b72=Tff7b72NoneTb4b4b4, Te6edf3samplerateTff7b72=Te6edf3SAMPLERATETb4b4b4)Tb4b4b4:
Tff7b72import T7ee787soundcard
Tff7b72from T7ee787pythoncom Tff7b72import Te6edf3CoInitializeExTb4b4b4, Te6edf3CoUninitialize
Tff7b72selfTff7b72.Td2a8ffcom_init Tff7b72= Te6edf3CoInitializeEx
Tff7b72selfTff7b72.Td2a8ffcom_release Tff7b72= Te6edf3CoUninitialize
Tff7b72selfTff7b72.Td2a8ffsamplerate Tff7b72= Te6edf3samplerate
Tff7b72selfTff7b72.Td2a8ffsoundcard Tff7b72= Te6edf3soundcard
Tff7b72if Te6edf3preferred_deviceTb4b4b4:
Tff7b72tryTb4b4b4: Tff7b72selfTff7b72.Td2a8ffdevice Tff7b72= Tff7b72selfTff7b72.Td2a8ffsoundcardTff7b72.Td2a8ffget_microphoneTb4b4b4(Te6edf3preferred_deviceTb4b4b4)
Tff7b72exceptTb4b4b4: Tff7b72selfTff7b72.Td2a8ffdevice Tff7b72= Tff7b72selfTff7b72.Td2a8ffsoundcardTff7b72.Td2a8ffdefault_microphoneTb4b4b4(Tb4b4b4)
Tff7b72elseTb4b4b4: Tff7b72selfTff7b72.Td2a8ffdevice Tff7b72= Tff7b72selfTff7b72.Td2a8ffsoundcardTff7b72.Td2a8ffdefault_microphoneTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffchannels Tff7b72= Tff7b72selfTff7b72.Td2a8ffdeviceTff7b72.Td2a8ffchannels
Tff7b72selfTff7b72.Td2a8ffbitdepth Tff7b72= T79c0ff32
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffUsing input device Tffd700{Tff7b72selfTff7b72.Td2a8ffdeviceTffd700}Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)

Tff7b72def Td2a8ffflushTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffrecorderTff7b72.Td2a8ffflushTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffget_recorderTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3samples_per_frameTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffcom_initTb4b4b4(T79c0ff0Tb4b4b4)
Tff7b72return Tff7b72selfTff7b72.Td2a8ffdeviceTff7b72.Td2a8ffrecorderTb4b4b4(Te6edf3samplerateTff7b72=Tff7b72selfTff7b72.Td2a8ffSAMPLERATETb4b4b4, Te6edf3blocksizeTff7b72=Te6edf3samples_per_frameTb4b4b4)

Tff7b72def Td2a8ffrelease_recorderTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffcom_releaseTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffget_backendTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3RNSTff7b72.Td2a8ffvendorTff7b72.Td2a8ffplatformutilsTff7b72.Td2a8ffis_linuxTb4b4b4(Tb4b4b4)Tb4b4b4: Tff7b72return Te6edf3LinuxBackend
Tff7b72elif Te6edf3RNSTff7b72.Td2a8ffvendorTff7b72.Td2a8ffplatformutilsTff7b72.Td2a8ffis_windowsTb4b4b4(Tb4b4b4)Tb4b4b4: Tff7b72return Te6edf3WindowsBackend
Tff7b72elif Te6edf3RNSTff7b72.Td2a8ffvendorTff7b72.Td2a8ffplatformutilsTff7b72.Td2a8ffis_darwinTb4b4b4(Tb4b4b4)Tb4b4b4: Tff7b72return Te6edf3DarwinBackend
Tff7b72elif Te6edf3RNSTff7b72.Td2a8ffvendorTff7b72.Td2a8ffplatformutilsTff7b72.Td2a8ffis_androidTb4b4b4(Tb4b4b4)Tb4b4b4: Tff7b72return Te6edf3AndroidBackend
Tff7b72elseTb4b4b4: Tff7b72return Tff7b72None

Te6edf3Backend Tff7b72= Te6edf3get_backendTb4b4b4(Tb4b4b4)

Tff7b72class T56d364SourceTb4b4b4(Tb4b4b4)Tb4b4b4: Tff7b72pass
Tff7b72class T56d364LocalSourceTb4b4b4(Te6edf3SourceTb4b4b4)Tb4b4b4: Tff7b72pass
Tff7b72class T56d364RemoteSourceTb4b4b4(Te6edf3SourceTb4b4b4)Tb4b4b4: Tff7b72pass

Tff7b72class T56d364LoopbackTb4b4b4(Te6edf3LocalSourceTb4b4b4, Te6edf3LocalSinkTb4b4b4)Tb4b4b4:
Te6edf3MAX_FRAMES Tff7b72= T79c0ff128

Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3target_frame_msTff7b72=T79c0ff70Tb4b4b4, Te6edf3codecTff7b72=Tff7b72NoneTb4b4b4, Te6edf3sinkTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffframe_deque Tff7b72= Te6edf3dequeTb4b4b4(Te6edf3maxlenTff7b72=Tff7b72selfTff7b72.Td2a8ffMAX_FRAMESTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffshould_run Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffloopback_thread Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffloopback_lock Tff7b72= Te6edf3threadingTff7b72.Td2a8ffLockTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffcodec Tff7b72= Te6edf3codec
Tff7b72selfTff7b72.Td2a8ff_sink Tff7b72= Te6edf3sink
Tff7b72selfTff7b72.Td2a8ff_source Tff7b72= Tff7b72None

Tff7b72def Td2a8ffstartTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffshould_runTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTffd700}Ta5d6ff startingTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffshould_run Tff7b72= Tff7b72True

Tff7b72def Td2a8ffstopTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffshould_run Tff7b72= Tff7b72False

Tff7b72def Td2a8ffcan_receiveTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3from_sourceTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ff_sinkTb4b4b4: Tff7b72return Tff7b72selfTff7b72.Td2a8ff_sinkTff7b72.Td2a8ffcan_receiveTb4b4b4(Te6edf3from_sourceTb4b4b4)
Tff7b72elseTb4b4b4: Tff7b72return Tff7b72True

Tff7b72def Td2a8ffhandle_frameTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3frameTb4b4b4, Te6edf3sourceTb4b4b4)Tb4b4b4:
Tff7b72with Tff7b72selfTff7b72.Td2a8ffloopback_lockTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffcodec Tff7b72and Tff7b72selfTff7b72.Td2a8ffsinkTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffsinkTff7b72.Td2a8ffhandle_frameTb4b4b4(Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffdecodeTb4b4b4(Te6edf3frameTb4b4b4)Tb4b4b4, Tff7b72selfTb4b4b4)

Tf0883e@property
Tff7b72def Td2a8ffsourceTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4: Tff7b72return Tff7b72selfTff7b72.Td2a8ff_source

Tf0883e@sourceTff7b72.Td2a8ffsetter
Tff7b72def Td2a8ffsourceTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3sourceTb4b4b4)Tb4b4b4: Tff7b72selfTff7b72.Td2a8ff_source Tff7b72= Te6edf3source

Tff7b72class T56d364LineSourceTb4b4b4(Te6edf3LocalSourceTb4b4b4)Tb4b4b4:
Te6edf3MAX_FRAMES Tff7b72= T79c0ff128
Te6edf3DEFAULT_FRAME_MS Tff7b72= T79c0ff80

Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3preferred_deviceTff7b72=Tff7b72NoneTb4b4b4, Te6edf3target_frame_msTff7b72=Te6edf3DEFAULT_FRAME_MSTb4b4b4, Te6edf3codecTff7b72=Tff7b72NoneTb4b4b4, Te6edf3sinkTff7b72=Tff7b72NoneTb4b4b4, Te6edf3filtersTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffpreferred_device Tff7b72= Te6edf3preferred_device
Tff7b72selfTff7b72.Td2a8ffframe_deque Tff7b72= Te6edf3dequeTb4b4b4(Te6edf3maxlenTff7b72=Tff7b72selfTff7b72.Td2a8ffMAX_FRAMESTb4b4b4)
Tff7b72selfTff7b72.Td2a8fftarget_frame_ms Tff7b72= Te6edf3target_frame_ms
Tff7b72selfTff7b72.Td2a8ffsamplerate Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffchannels Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffbitdepth Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffshould_run Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffingest_thread Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffrecording_lock Tff7b72= Te6edf3threadingTff7b72.Td2a8ffLockTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ff_codec Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffcodec Tff7b72= Te6edf3codec
Tff7b72selfTff7b72.Td2a8ffsink Tff7b72= Te6edf3sink
Tff7b72selfTff7b72.Td2a8fffilters Tff7b72= Tff7b72None

Tff7b72if Te6edf3filters Tff7b72!= Tff7b72NoneTb4b4b4:
Tff7b72if Tffa657typeTb4b4b4(Te6edf3filtersTb4b4b4) Tff7b72== Tffa657listTb4b4b4: Tff7b72selfTff7b72.Td2a8fffilters Tff7b72= Te6edf3filters
Tff7b72elseTb4b4b4: Tff7b72selfTff7b72.Td2a8fffilters Tff7b72= Tb4b4b4[Te6edf3filtersTb4b4b4]

Tf0883e@property
Tff7b72def Td2a8ffcodecTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4: Tff7b72return Tff7b72selfTff7b72.Td2a8ff_codec

Tf0883e@codecTff7b72.Td2a8ffsetter
Tff7b72def Td2a8ffcodecTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3codecTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3codec Tff7b72== Tff7b72NoneTb4b4b4: Tff7b72selfTff7b72.Td2a8ff_codec Tff7b72= Tff7b72None
Tff7b72elif Tff7b72not Tffa657issubclassTb4b4b4(Tffa657typeTb4b4b4(Te6edf3codecTb4b4b4)Tb4b4b4, Te6edf3CodecTb4b4b4)Tb4b4b4: Tff7b72raise Te6edf3CodecErrorTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffInvalid codec specified for Tffd700{Tff7b72selfTffd700}Ta5d6ff"Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ff_codec Tff7b72= Te6edf3codec

Tff7b72if Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffpreferred_samplerateTb4b4b4: Tff7b72selfTff7b72.Td2a8ffpreferred_samplerate Tff7b72= Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffpreferred_samplerate
Tff7b72elseTb4b4b4: Tff7b72selfTff7b72.Td2a8ffpreferred_samplerate Tff7b72= Te6edf3BackendTff7b72.Td2a8ffSAMPLERATE

Tff7b72if Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffframe_quanta_msTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8fftarget_frame_msTff7b72%Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffframe_quanta_ms Tff7b72!= T79c0ff0Tb4b4b4:
Tff7b72selfTff7b72.Td2a8fftarget_frame_ms Tff7b72= Te6edf3mathTff7b72.Td2a8ffceilTb4b4b4(Tff7b72selfTff7b72.Td2a8fftarget_frame_msTff7b72/Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffframe_quanta_msTb4b4b4)Tff7b72*Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffframe_quanta_ms
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTffd700}Ta5d6ff target frame time quantized to Tffd700{Tff7b72selfTff7b72.Td2a8fftarget_frame_msTffd700}Ta5d6ffms due to codec frame quantaTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffframe_max_msTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8fftarget_frame_ms Tff7b72> Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffframe_max_msTb4b4b4:
Tff7b72selfTff7b72.Td2a8fftarget_frame_ms Tff7b72= Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffframe_max_ms
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTffd700}Ta5d6ff target frame time clamped to Tffd700{Tff7b72selfTff7b72.Td2a8fftarget_frame_msTffd700}Ta5d6ffms due to codec frame limitTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)

Tff7b72if Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffvalid_frame_msTb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8fftarget_frame_ms Tff7b72in Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffvalid_frame_msTb4b4b4:
Tff7b72selfTff7b72.Td2a8fftarget_frame_ms Tff7b72= Tffa657minTb4b4b4(Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffvalid_frame_msTb4b4b4, Te6edf3keyTff7b72=Tff7b72lambda Te6edf3tTb4b4b4:Tffa657absTb4b4b4(Te6edf3tTff7b72-Tff7b72selfTff7b72.Td2a8fftarget_frame_msTb4b4b4)Tb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTffd700}Ta5d6ff target frame time clamped to closest valid value of Tffd700{Tff7b72selfTff7b72.Td2a8fftarget_frame_msTffd700}Ta5d6ffms Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffbackend Tff7b72= Te6edf3BackendTb4b4b4(Te6edf3preferred_deviceTff7b72=Tff7b72selfTff7b72.Td2a8ffpreferred_deviceTb4b4b4, Te6edf3samplerateTff7b72=Tff7b72selfTff7b72.Td2a8ffpreferred_samplerateTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffsamplerate Tff7b72= Tff7b72selfTff7b72.Td2a8ffbackendTff7b72.Td2a8ffsamplerate
Tff7b72selfTff7b72.Td2a8ffbitdepth Tff7b72= Tff7b72selfTff7b72.Td2a8ffbackendTff7b72.Td2a8ffbitdepth
Tff7b72selfTff7b72.Td2a8ffchannels Tff7b72= Tff7b72selfTff7b72.Td2a8ffbackendTff7b72.Td2a8ffchannels
Tff7b72selfTff7b72.Td2a8ffsamples_per_frame Tff7b72= Te6edf3mathTff7b72.Td2a8ffceilTb4b4b4(Tb4b4b4(Tff7b72selfTff7b72.Td2a8fftarget_frame_msTff7b72/T79c0ff1000Tb4b4b4)Tff7b72*Tff7b72selfTff7b72.Td2a8ffsamplerateTb4b4b4)

Tff7b72def Td2a8ffstartTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffshould_runTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTffd700}Ta5d6ff starting at Tffd700{Tff7b72selfTff7b72.Td2a8ffsamples_per_frameTffd700}Ta5d6ff samples per frame, Tffd700{Tff7b72selfTff7b72.Td2a8ffchannelsTffd700}Ta5d6ff channelsTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffshould_run Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8ffingest_thread Tff7b72= Te6edf3threadingTff7b72.Td2a8ffThreadTb4b4b4(Te6edf3targetTff7b72=Tff7b72selfTff7b72.Td2a8ff__ingest_jobTb4b4b4, Te6edf3daemonTff7b72=Tff7b72TrueTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffingest_threadTff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffstopTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffshould_run Tff7b72= Tff7b72False

Tff7b72def Td2a8ff__ingest_jobTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72with Tff7b72selfTff7b72.Td2a8ffrecording_lockTb4b4b4:
Te6edf3frame_samples Tff7b72= Tff7b72None
Tff7b72if Tff7b72not Te6edf3RNSTff7b72.Td2a8ffvendorTff7b72.Td2a8ffplatformutilsTff7b72.Td2a8ffis_darwinTb4b4b4(Tb4b4b4)Tb4b4b4: Te6edf3backend_samples_per_frame Tff7b72= Tff7b72selfTff7b72.Td2a8ffsamples_per_frame
Tff7b72elseTb4b4b4: Te6edf3backend_samples_per_frame Tff7b72= Tff7b72None

Tff7b72with Tff7b72selfTff7b72.Td2a8ffbackendTff7b72.Td2a8ffget_recorderTb4b4b4(Te6edf3samples_per_frameTff7b72=Te6edf3backend_samples_per_frameTb4b4b4) Tff7b72as Te6edf3recorderTb4b4b4:
Tff7b72while Tff7b72selfTff7b72.Td2a8ffshould_runTb4b4b4:
Te6edf3frame_samples Tff7b72= Te6edf3recorderTff7b72.Td2a8ffrecordTb4b4b4(Te6edf3numframesTff7b72=Tff7b72selfTff7b72.Td2a8ffsamples_per_frameTb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8fffilters Tff7b72!= Tff7b72NoneTb4b4b4:
Tff7b72for Te6edf3f Tff7b72in Tff7b72selfTff7b72.Td2a8fffiltersTb4b4b4: Te6edf3frame_samples Tff7b72= Te6edf3fTff7b72.Td2a8ffhandle_frameTb4b4b4(Te6edf3frame_samplesTb4b4b4, Tff7b72selfTff7b72.Td2a8ffsamplerateTb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffcodecTb4b4b4:
Te6edf3frame Tff7b72= Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffencodeTb4b4b4(Te6edf3frame_samplesTb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffsink Tff7b72and Tff7b72selfTff7b72.Td2a8ffsinkTff7b72.Td2a8ffcan_receiveTb4b4b4(Te6edf3from_sourceTff7b72=Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffsinkTff7b72.Td2a8ffhandle_frameTb4b4b4(Te6edf3frameTb4b4b4, Tff7b72selfTb4b4b4)

Tff7b72class T56d364OpusFileSourceTb4b4b4(Te6edf3LocalSourceTb4b4b4)Tb4b4b4:
Te6edf3MAX_FRAMES Tff7b72= T79c0ff128
Te6edf3DEFAULT_FRAME_MS Tff7b72= T79c0ff70
Te6edf3TYPE_MAP_FACTOR Tff7b72= Te6edf3npTff7b72.Td2a8ffiinfoTb4b4b4(Ta5d6ff"Ta5d6ffint16Ta5d6ff"Tb4b4b4)Tff7b72.Td2a8ffmax

Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3file_pathTb4b4b4, Te6edf3target_frame_msTff7b72=Te6edf3DEFAULT_FRAME_MSTb4b4b4, Te6edf3loopTff7b72=Tff7b72FalseTb4b4b4, Te6edf3codecTff7b72=Tff7b72NoneTb4b4b4, Te6edf3sinkTff7b72=Tff7b72NoneTb4b4b4, Te6edf3timedTff7b72=Tff7b72FalseTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8fftarget_frame_ms Tff7b72= Te6edf3target_frame_ms
Tff7b72selfTff7b72.Td2a8ffloop Tff7b72= Te6edf3loop
Tff7b72selfTff7b72.Td2a8fftimed Tff7b72= Te6edf3timed
Tff7b72selfTff7b72.Td2a8ffread_lock Tff7b72= Te6edf3threadingTff7b72.Td2a8ffLockTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffshould_run Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffingest_thread Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffnext_frame Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ff_codec Tff7b72= Tff7b72None

Tff7b72if Te6edf3file_path Tff7b72== Tff7b72NoneTb4b4b4: Tff7b72raise Tf85149TypeErrorTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTffd700}Ta5d6ff initialised with invalid file path: Tffd700{Te6edf3file_pathTffd700}Ta5d6ff"Tb4b4b4)
Tff7b72elif Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffisfileTb4b4b4(Te6edf3file_pathTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8fffile Tff7b72= Te6edf3OpusFileTb4b4b4(Te6edf3file_pathTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffsamplerate Tff7b72= Tff7b72selfTff7b72.Td2a8fffileTff7b72.Td2a8fffrequency
Tff7b72selfTff7b72.Td2a8ffchannels Tff7b72= Tff7b72selfTff7b72.Td2a8fffileTff7b72.Td2a8ffchannels
Tff7b72selfTff7b72.Td2a8ffbitdepth Tff7b72= T79c0ff16
Tff7b72selfTff7b72.Td2a8ffsamples Tff7b72= Tff7b72selfTff7b72.Td2a8fffileTff7b72.Td2a8ffas_arrayTb4b4b4(Tb4b4b4)Tff7b72/Tff7b72selfTff7b72.Td2a8ffTYPE_MAP_FACTOR
Tff7b72selfTff7b72.Td2a8ffsample_count Tff7b72= Tff7b72selfTff7b72.Td2a8ffsamplesTff7b72.Td2a8ffshapeTb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72selfTff7b72.Td2a8fflength_ms Tff7b72= Tb4b4b4(Tff7b72selfTff7b72.Td2a8ffsample_countTff7b72/Tff7b72selfTff7b72.Td2a8ffsamplerateTb4b4b4)Tff7b72*T79c0ff1000
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTffd700}Ta5d6ff loaded Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettytimeTb4b4b4(Tff7b72selfTff7b72.Td2a8fflength_msTff7b72/T79c0ff1000Tb4b4b4)Tffd700}Ta5d6ff of audio from Tffd700{Te6edf3file_pathTffd700}Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTffd700}Ta5d6ff samplerate is Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyfrequencyTb4b4b4(Tff7b72selfTff7b72.Td2a8ffsamplerateTb4b4b4)Tffd700}Ta5d6ff, Tffd700{Tff7b72selfTff7b72.Td2a8ffchannelsTffd700}Ta5d6ff channels, Tffd700{Tff7b72selfTff7b72.Td2a8ffsample_countTffd700}Ta5d6ff samples in totalTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72elseTb4b4b4: Tff7b72raise Tf85149OSErrorTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTffd700}Ta5d6ff file Tffd700{Te6edf3file_pathTffd700}Ta5d6ff not foundTa5d6ff"Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffcodec Tff7b72= Te6edf3codec
Tff7b72selfTff7b72.Td2a8ffsink Tff7b72= Te6edf3sink

Tf0883e@property
Tff7b72def Td2a8ffcodecTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4: Tff7b72return Tff7b72selfTff7b72.Td2a8ff_codec

Tf0883e@codecTff7b72.Td2a8ffsetter
Tff7b72def Td2a8ffcodecTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3codecTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3codec Tff7b72== Tff7b72NoneTb4b4b4: Tff7b72selfTff7b72.Td2a8ff_codec Tff7b72= Tff7b72None
Tff7b72elif Tff7b72not Tffa657issubclassTb4b4b4(Tffa657typeTb4b4b4(Te6edf3codecTb4b4b4)Tb4b4b4, Te6edf3CodecTb4b4b4)Tb4b4b4: Tff7b72raise Te6edf3CodecErrorTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffInvalid codec specified for Tffd700{Tff7b72selfTffd700}Ta5d6ff"Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ff_codec Tff7b72= Te6edf3codec

Tff7b72if Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffframe_quanta_msTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8fftarget_frame_msTff7b72%Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffframe_quanta_ms Tff7b72!= T79c0ff0Tb4b4b4:
Tff7b72selfTff7b72.Td2a8fftarget_frame_ms Tff7b72= Te6edf3mathTff7b72.Td2a8ffceilTb4b4b4(Tff7b72selfTff7b72.Td2a8fftarget_frame_msTff7b72/Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffframe_quanta_msTb4b4b4)Tff7b72*Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffframe_quanta_ms
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTffd700}Ta5d6ff target frame time quantized to Tffd700{Tff7b72selfTff7b72.Td2a8fftarget_frame_msTffd700}Ta5d6ffms due to codec frame quantaTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffframe_max_msTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8fftarget_frame_ms Tff7b72> Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffframe_max_msTb4b4b4:
Tff7b72selfTff7b72.Td2a8fftarget_frame_ms Tff7b72= Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffframe_max_ms
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTffd700}Ta5d6ff target frame time clamped to Tffd700{Tff7b72selfTff7b72.Td2a8fftarget_frame_msTffd700}Ta5d6ffms due to codec frame limitTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)

Tff7b72if Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffvalid_frame_msTb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8fftarget_frame_ms Tff7b72in Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffvalid_frame_msTb4b4b4:
Tff7b72selfTff7b72.Td2a8fftarget_frame_ms Tff7b72= Tffa657minTb4b4b4(Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffvalid_frame_msTb4b4b4, Te6edf3keyTff7b72=Tff7b72lambda Te6edf3tTb4b4b4:Tffa657absTb4b4b4(Te6edf3tTff7b72-Tff7b72selfTff7b72.Td2a8fftarget_frame_msTb4b4b4)Tb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTffd700}Ta5d6ff target frame time clamped to closest valid value of Tffd700{Tff7b72selfTff7b72.Td2a8fftarget_frame_msTffd700}Ta5d6ffms Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffsamples_per_frame Tff7b72= Te6edf3mathTff7b72.Td2a8ffceilTb4b4b4(Tb4b4b4(Tff7b72selfTff7b72.Td2a8fftarget_frame_msTff7b72/T79c0ff1000Tb4b4b4)Tff7b72*Tff7b72selfTff7b72.Td2a8ffsamplerateTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffframe_time Tff7b72= Tff7b72selfTff7b72.Td2a8ffsamples_per_frameTff7b72/Tff7b72selfTff7b72.Td2a8ffsamplerate
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTffd700}Ta5d6ff frame time is Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyshorttimeTb4b4b4(Tff7b72selfTff7b72.Td2a8ffframe_timeTb4b4b4)Tffd700}Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)

Tff7b72def Td2a8ffstartTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffshould_runTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTffd700}Ta5d6ff starting at Tffd700{Tff7b72selfTff7b72.Td2a8ffsamples_per_frameTffd700}Ta5d6ff samples per frame, Tffd700{Tff7b72selfTff7b72.Td2a8ffchannelsTffd700}Ta5d6ff channelsTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffshould_run Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8ffingest_thread Tff7b72= Te6edf3threadingTff7b72.Td2a8ffThreadTb4b4b4(Te6edf3targetTff7b72=Tff7b72selfTff7b72.Td2a8ff__ingest_jobTb4b4b4, Te6edf3daemonTff7b72=Tff7b72TrueTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffingest_threadTff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffstopTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffshould_run Tff7b72= Tff7b72False

Tff7b72def Td2a8ff__ingest_jobTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72with Tff7b72selfTff7b72.Td2a8ffread_lockTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffnext_frame Tff7b72= Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)
Te6edf3fi Tff7b72= T79c0ff0Tb4b4b4; Te6edf3spf Tff7b72= Tff7b72selfTff7b72.Td2a8ffsamples_per_frameTb4b4b4; Te6edf3sc Tff7b72= Tff7b72selfTff7b72.Td2a8ffsample_count
Tff7b72while Tff7b72selfTff7b72.Td2a8ffshould_runTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffsink Tff7b72and Tff7b72selfTff7b72.Td2a8ffsinkTff7b72.Td2a8ffcan_receiveTb4b4b4(Te6edf3from_sourceTff7b72=Tff7b72selfTb4b4b4) Tff7b72and Tb4b4b4(Tff7b72not Tff7b72selfTff7b72.Td2a8fftimed Tff7b72or Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4) Tff7b72>Tff7b72= Tff7b72selfTff7b72.Td2a8ffnext_frameTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffnext_frame Tff7b72= Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)Tff7b72+Tff7b72selfTff7b72.Td2a8ffframe_time
Te6edf3fi Tff7b72+Tff7b72= T79c0ff1
Te6edf3fs Tff7b72= Tb4b4b4(Te6edf3fiTff7b72-T79c0ff1Tb4b4b4)Tff7b72*Te6edf3spfTb4b4b4; Te6edf3fe Tff7b72= Tffa657minTb4b4b4(Te6edf3fiTff7b72*Te6edf3spfTb4b4b4, Te6edf3scTb4b4b4)
Te6edf3frame_samples Tff7b72= Tff7b72selfTff7b72.Td2a8ffsamplesTb4b4b4[Te6edf3fsTb4b4b4:Te6edf3feTb4b4b4, Tb4b4b4:Tb4b4b4]
Tff7b72if Tffa657lenTb4b4b4(Te6edf3frame_samplesTb4b4b4) Tff7b72< T79c0ff1Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffloopTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTffd700}Ta5d6ff exhausted file samples, looping...Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Te6edf3fi Tff7b72= T79c0ff0
Tff7b72elseTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTffd700}Ta5d6ff exhausted file samples, stopping...Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffshould_run Tff7b72= Tff7b72False
Tff7b72elseTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffcodecTb4b4b4:
Te6edf3frame Tff7b72= Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffencodeTb4b4b4(Te6edf3frame_samplesTb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffsink Tff7b72and Tff7b72selfTff7b72.Td2a8ffsinkTff7b72.Td2a8ffcan_receiveTb4b4b4(Te6edf3from_sourceTff7b72=Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffsinkTff7b72.Td2a8ffhandle_frameTb4b4b4(Te6edf3frameTb4b4b4, Tff7b72selfTb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3timeTff7b72.Td2a8ffsleepTb4b4b4(Tff7b72selfTff7b72.Td2a8ffframe_timeTff7b72*T79c0ff0.1Tb4b4b4)

Tff7b72class T56d364PacketSourceTb4b4b4(Te6edf3RemoteSourceTb4b4b4)Tb4b4b4: Tff7b72pass


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────